Para esta actividad vamos a crear una VPC (Amazon Virtual Private Cloud), generar una red personalizada, grupos de seguridad para la instancia EC2 y finalmente personalizar la instancia EC2 para ejecutar el servidor web y lanzarlo en VPC.

Recrearemos esta topología.


Índice

  1. [[#VPC]]
  2. [[#Subredes]]
  3. [[#Configuración Gateways y Tablas de Rutas]]
  4. [[#Grupo de seguridad]]
  5. [[#EC2 y asociación]]
  6. [[#Montaje sitio web estático en esta nueva instancia]]
  7. [[#Conclusión]]

VPC

Para la creación del VPC debemos dirigirnos a servicios -> Networking & Content Delivery -> VPC

Luego presionamos en Create VPC

Ahora se nos abre un dashboard con diversas opciones de configuración y un preview de la topología.
Técnicamente, desde aquí podemos crear la VPC con subnets, sin embargo lo haré separado, por lo tanto seleccionamos la opción "VPC ONLY"

Configuramos:

Guardar y listo:

Ahora, a la izquierda nos dirigimos a Subnets

Subredes

Lo más probable es que en este punto tengamos algunas subnets creadas por la instancia EC2 creada con anterioridad. Sin embargo, sólo debemos crear nuevas.
Para ello, crearemos 4 subredes. 2 públicas y 2 privadas.

Botón Create subnet.
Seleccionamos la VPC correspondiente (mi-vpc).
Luego debemos configurar ciertas cosas:

Creamos las 4, distribuidas como:

Configuración Gateways y Tablas de Rutas

Nos vamos nuevamente a la izquierda y seleccionamos "Internet Gateways" y "Create Internet Gateways" en el botón naranjo-amazon


Se nos mostrará la opción para agregarla a nuestra VPC. Si no lo hacemos así, siempre podemos ir al dashboard de VPC, seleccionar el gateway, acciones y "Attach To VPC"

Ahora debemos crear las tablas de ruta.

En el menú de la izquierda vamos a "Route Tables", justo encima de "Internet Gateways". Mismo proceso presionando el botón naranjo "Create Route Table".
Le indicamos a cual VPC lo adherimos y continuamos.

Desde esta pantalla podemos configurar las rutas, la local ya viene configurada, sólo nos falta el gateway:
Le damos a edit routes -> add route

finalmente debemos asociarlo a nuestras subredes. Desde el dashboard de la tabla de rutas creada

Subnet associations y edit subnet associations.
Ingresamos ahí, seleccionamos las redes públicas y save.

Finalmente debemos crear un proceso similar para NAT gateway.
Nos dirigimos ahí desde el menú de la izquierda, create NAT y configuramos:

Esperamos a que el estado cambie a disponible, y nos dirigimos a route tables nuevamente.
Aquí debemos crear una nueva tabla de enrutamiento específica para subredes privadas.
Editamos las rutas:

y agregamos las subredes privadas:

Grupo de seguridad

El proceso es bastante sencillo:
Nos dirigimos al menú de la izquierda y Security->Security Groups->Create security group

y configuramos reglas de entrada, como por ejemplo:
SSH desde mi IP, HTTP desde cualquier IPv4 e ICMP desde cualquier IPv4.

EC2 y asociación

Finalmente vamos a asociar una instancia EC2 al nuevo grupo de seguridad. Lo más fácil es crear una nueva instancia y al momento de hacerlo le decimos que use ese grupo de seguridad y VPC. El camino difícil es una migración para lo cual debemos crear una AMI de la instancia previamente creada, lanzar la nueva instancia en la VPC.

Lo que haremos será:

Creamos la nueva instancia, similar a la anteriormente mencionada pero cambiando algunos parámetros:

Con eso ya tenemos configurado el grupo de seguridad y la VPC en la instancia EC2. Para poder conectarnos a ella debemos asignarle una IP pública, la cual podemos hacer con elastic IP.

Montaje sitio web estático en esta nueva instancia

Similar a como lo hicimos en este documento, vamos a instalar Apache2 mediante SSH, crear un rol IAM para acceder al bucket S3, descargar los archivos en la instancia, sync en la máquina.

Haremos los siguientes comandos luego de conectarnos por SSH:

sudo yum update -y
sudo yum install httpd -y
sudo systemctl start httpd
sudo systemctl enable httpd

Ahora en el dashboard de amazon iremos a crear una IAM. IAM es Identity and Access Management, básicamente sirve para crear reglas, credenciales, identificación, authenticación, etc.
Nos vamos al menú de la izquierda, en roles->create role.

En la parte de los permisos

Ya con eso, nos vamos hacía la instancia EC2, la seleccionamos y nos dirigimos a Actions -> security -> modify IAM roles. Seleccionamos y Update

Nos dirigimos, a la terminal, nos conectamos por SSH a la instancia y lanzamos el comando
aws s3 ls s3://URL-BUCKET
con esto comprobamos el acceso al bucket.

Con esto ya hecho, podemos acceder a través de la dirección que nos proporciona la instancia EC2

Que por cierto en este caso es http por la configuración de apache2.


Conclusión

Configuramos una VPC, la desplegamos en una instancia EC2 y utilizamos dicha instancia para montar un servidor web con un sitio estático.
Todo esto nos permitió entender de mejor forma la importancia de las estructuras bien configuradas en entornos de nube.
Este diseño de subredes públicas y privadas, gateways y nat gateways optimiza la seguridad y garantiza que las instancias privadas puedan tener acceso controlado a internet para poder mantener actualizaciones.

Me enfrenté al problema del montaje de la VPC en una instancia EC2 previamente creada, descubriendo que la forma más ideal es crear la VPC antes de la instancia, si no, hay que hacer una migración de la instancia a través de una imagen de respaldo. Esto es un problema inherente de AWS que es mejor evitar.

Finalmente el montaje de un sitio estático en la instancia, creando así un servidor web, consolida la comprensión sobre la integración de servicios AWS y el funcionamiento del ecosistema.

Todo esto nos deja aún más clara la importancia de realizar una planificación meticulosa de la infraestructura que vamos a montar.